package Day007_Collection_泛型_数据结构.Demo05_泛型通配符;

/*

    泛型通配符: ?
            1.通配符基本使用:不知道使用什么类型接收时,可以使用<?>
                注意:使用泛型通配符,只能接受数据,不能添加或删除

            2.通配符高级使用:受限泛型
                ? super xxx : 限制类型为xxx类型,或者xxx类型的父类类型 -- 上限
                ? extends xxx: 限制类型为xxx类型,或者继承xxx类型的子类类型 -- 下限
 */

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {

        //泛型不存在多态!
        //ArrayList<Object> list = new ArrayList<String>();

        //创建一个集合,限制集合元素类型为String
        ArrayList<String> list1 = new ArrayList<>();
        //创建一个集合,限制集合元素类型为Integer  Integer类继承Number类
        ArrayList<Integer> list2 = new ArrayList<>();
        //创建一个集合,限制集合元素类型为Object
        ArrayList<Object> list3 = new ArrayList<>();

        //需要method1同时调用list1 list2 list3...不同数据类型的集合
        method1(list1);
        method1(list2);
        method1(list3);
    }

    public static void method1(ArrayList<?> list){ // 不知道使用什么类型接收时,可以使用<?>
        for (Object o : list) {
            System.out.println(o);
        }
    }
}
